﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;

namespace Sispe.BussinesLogic
{
    public interface IProyectoBL
    {
        List<PROYECTO> GetAllFromProyectos();
        List<PROYECTO> GetAllFromProyectosByDescripcion(string descripcion);
        List<PROYECTO> GetAllProyectosVigentes();
        List<PROYECTO> GetAllProyectosByCliente(string descripcion);
        List<PROYECTO> GetAllProyectosByUbicacion(string ubicacion);
        List<PROYECTO> GetAllFromProyectoVigentessByDescripcion(string descripcion);
        List<PROYECTO> GetAllProyectosVigentesByCliente(string descripcion);
        List<PROYECTO> GetAllProyectosVigentesByUbicacion(string ubicacion);

        List<PROYECTO> GetAllFromProyectoByNombreByCliente(string proyecto, string cliente);
        List<PROYECTO> GetAllFromProyectoByNombreByClienteByFecha(string proyecto, string cliente, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectoByNombreByUbicacion(string proyecto, string ubicacion);
        List<PROYECTO> GetAllFromProyectoByNombreByUbicacionByFecha(string proyecto, string ubicacion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectoByNombreByClienteBYUbicacion(string proyecto, string cliente, string ubicacion);
        List<PROYECTO> GetAllFromProyectoByNombreByClienteBYUbicacionByFecha(string proyecto, string cliente, string ubicacion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectosByCLienteByUbicacion(string cliente, string ubicacion);
        List<PROYECTO> GetAllFromProyectosByCLienteByUbicacionByFecha(string cliente, string ubicacion, DateTime fecIni, DateTime fecFin);


        List<PROYECTO> GetAllFromProyectosByFecha(DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectosByDescripcionByFecha(string descripcion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllProyectosVigentesByFecha(DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllProyectosByClienteByFecha(string descripcion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllProyectosByUbicacionByFecha(string ubicacion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectoVigentessByDescripcionByFecha(string descripcion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllProyectosVigentesByClienteByFecha(string descripcion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllProyectosVigentesByUbicacionByFecha(string ubicacion, DateTime fecIni, DateTime fecFin);

        List<PROYECTO> GetAllFromProyectosVigentesByNombreByCliente(string proyecto, string cliente);
        List<PROYECTO> GetAllFromProyectosVigentesByNombreByClienteByFecha(string proyecto, string cliente, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectosVigentesByNombreByUbicacion(string proyecto, string ubicacion);
        List<PROYECTO> GetAllFromProyectosVigentesByNombreByUbicacionByFecha(string proyecto, string ubicacion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectsVigentesoByNombreByClienteBYUbicacion(string proyecto, string cliente, string ubicacion);
        List<PROYECTO> GetAllFromProyectosVigentesByNombreByClienteBYUbicacionByFecha(string proyecto, string cliente, string ubicacion, DateTime fecIni, DateTime fecFin);
        List<PROYECTO> GetAllFromProyectosVigentesByCLienteByUbicacion(string cliente, string ubicacion);
        List<PROYECTO> GetAllFromProyectosVigentesByCLienteByUbicacionByFecha(string cliente, string ubicacion, DateTime fecIni, DateTime fecFin);


        PROYECTO GetFromProyectoById(Int32 id);
        PROYECTO GetFromProyectoByCodigo(string codigo);

        void AddProyecto(PROYECTO proyecto);
        void UpdateProyecto(PROYECTO proyecto);
        void DeleteProyecto(Int32 id);

        bool ExisteDuplicidad(string nombreProyecto, string codigo, Int32 id);
    }
}
